package controller;

import java.util.ArrayList;
import java.util.List;

import dao.ItemParcelaVendaDao;
import dao.ItemParcelaVendaDaoImplementation;
import dao.ItemVendaDao;
import dao.ItemVendaDaoImplementation;
import dao.ProdutoDao;
import dao.ProdutoDaoImplementation;
import dao.VendaDao;
import dao.VendaDaoImplementation;
import entity.ItemParcelaVenda;
import entity.ItemVenda;
import entity.Produto;
import entity.Venda;

public class VendaController {
			
		public void salvarVenda(Venda venda)
		{
			VendaDao dao = new VendaDaoImplementation();
			ProdutoDao produtoDao = new ProdutoDaoImplementation();
			dao.save(venda);
			
			List<ItemVenda> listaItemVenda = new ItemVendaDaoImplementation().list();
			
			ItemVendaDao daoItemVenda = new ItemVendaDaoImplementation();
			
			for (ItemVenda itemVendaNull: listaItemVenda)
			{
				if(itemVendaNull.getVenda() == null)
				{
					itemVendaNull.setVenda(new Venda());
					itemVendaNull.setVenda(venda);
					daoItemVenda.update(itemVendaNull);
					
					Produto produto = produtoDao.getProduto(itemVendaNull.getProduto().getIdProduto());
					
					Integer novoEstoque = Integer.parseInt(produto.getEstoque()) - itemVendaNull.getQuantidade();
					produto.setEstoque(novoEstoque.toString());
					
					produtoDao.update(produto);
				}
			}
			
			List<ItemParcelaVenda> listaItemParcelaVenda = new ItemParcelaVendaDaoImplementation().listItemParcelaVendaNull();
			
			ItemParcelaVendaDao daoItemParcelaVenda = new ItemParcelaVendaDaoImplementation();
			
			for (ItemParcelaVenda listaItemParcelaVendaNull: listaItemParcelaVenda)
			{
				if(listaItemParcelaVendaNull.getVenda() == null)
				{
					listaItemParcelaVendaNull.setVenda(new Venda());
					listaItemParcelaVendaNull.setVenda(venda);
					daoItemParcelaVenda.update(listaItemParcelaVendaNull);
				}
			}
		}
		
		public void editarVenda(Venda venda)
		{
			VendaDao dao = new VendaDaoImplementation();
			dao.update(venda);
		}
		
		public void excluirVenda(Venda venda)
		{
			VendaDao dao = new VendaDaoImplementation();
			dao.delete(venda);
		}
		
		public void consultarVenda(Venda venda)
		{
			VendaDao dao = new VendaDaoImplementation();
			dao.consult(venda);
		}
		
		public Venda getVendaById(long idVenda){
			VendaDao dao = new VendaDaoImplementation();
			return dao.getVenda(idVenda);
			}

			public List<Venda> listarVenda() 
			{
			List<Venda> listaVenda = new VendaDaoImplementation().list();

			listaVenda = new ArrayList<Venda>(listaVenda);

			return listaVenda;
			}
}


